{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load main.py\n",
    "\"\"\"\n",
    "@Time    :2019/12/10 18:04\n",
    "@Author  : 梁家熙\n",
    "@Email:  :11849322@mail.sustech.edu.cn\n",
    "\"\"\"\n",
    "import json\n",
    "\n",
    "from fastai.vision import ImageList, Image, CategoryList\n",
    "from pandas import DataFrame\n",
    "from tqdm import tqdm\n",
    "import random\n",
    "from pprint import pprint\n",
    "import os\n",
    "import collections\n",
    "from typing import List, Dict, Tuple\n",
    "import logging\n",
    "import torch\n",
    "from fastai.vision import *\n",
    "logger = logging.getLogger(__name__)\n",
    "logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')\n",
    "\n",
    "\n",
    "class MyImageList(ImageList):\n",
    "    @classmethod\n",
    "    def from_df(cls, df:DataFrame, path, cols=0, folder=None, suffix:str='', **kwargs)->'ItemList':\n",
    "        \"Get the filenames in `cols` of `df` with `folder` in front of them, `suffix` at the end.\"\n",
    "        values = df.iloc[:, 1: ].values\n",
    "        labels = df.iloc[:, 0].values\n",
    "        values = torch.tensor(values).float()\n",
    "        items = []\n",
    "        for y, v in zip(labels, values):\n",
    "            t = Image(v.view(28, 28).unsqueeze(0))\n",
    "            t.y = y\n",
    "            items.append(t)\n",
    "        # res = cls(items, label_cls=CategoryList)\n",
    "        res = cls(items)\n",
    "        return res\n",
    "    \n",
    "    @classmethod\n",
    "    def from_test_data(cls, pth):\n",
    "        # 从测试集合上读取\n",
    "        df = pd.read_csv(pth)\n",
    "        values = df.values\n",
    "        indexs = df.index\n",
    "        values = torch.tensor(values).float()\n",
    "        items = []\n",
    "        for i, v in zip(indexs, values):\n",
    "            t = Image(v.view(28, 28).unsqueeze(0))\n",
    "            t.index = i\n",
    "            items.append(t)\n",
    "      \n",
    "        # res = cls(items, label_cls=CategoryList)\n",
    "        res = cls(items)\n",
    "        return res\n",
    "    \n",
    "    def get(self, i):\n",
    "        res = self.items[i]\n",
    "        return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "pth = r'/home/liangjiaxi/TMP_PROJECT/fastaipractice/data/数字图像识别'\n",
    "data = MyImageList.from_csv(pth, 'train.csv', cols= list(range(1, 785)))\n",
    "data = data.split_by_rand_pct(0.2, 0)\n",
    "data = data.label_from_func(lambda x: x.y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "# tfms = tfms = get_transforms(do_flip=False)\n",
    "# tfms = [rotate(degrees=(-20,20)), symmetric_warp(magnitude=(-0.3,0.3))]\n",
    "# data = data.transform(tfms)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = data.databunch(device = 'cuda', bs = 64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x1440 with 25 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data.show_batch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDx2trS9AW70+XU9QvBYabG4iExjMjSOf4UUEZIHJ54rGALMAOpOBXVeOpBaXtnoEBAttMt0Tap4MrAM7H1OTjPtXpVpy540oOzd3fslv8AO7SXzZ6VRyuoRdr9fQzfEvhy58NaglvPIk0UsYlgmTpIh747H2rGrtPFqx2vgzwjZ4zP9nkuGbH8LsCBXF0sHVnVoqU97tX2vZtX+drlUpOULt3HRtskVsZ2kHFel6v4atvEXiWXxFJqllHocyR3E7faF8xBtG6PAyd3FeZUUYjDyqSU4T5Wk1sno7d+umj/AAFUpuTTi7G74s19df1VHt4vJsraIW9rF/djXpn3PWsKiitqVKNKCpwWiLjFRVkf/9k=\n",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAApNJREFUSInt1l1Ik2EUwPH/u/fFrRlTW4HToSJqqJAzDSsz0rwaKBJWaESFUCpoCH0QdVE3QaHWRQYl1UUgRQZFkH0QgRVZ5geESuqcs2lJKlPMXPvqQjJEN5dbUtC5eeA5h/PjPLy8zyNkC/kuljFky4n9BxcMQZLort2Arg0eDraibVqJa3PSnwEFuZzhuzH06q/QPqYluXkP1dqnXL9Vw0TBRv+DHy4k8S61jrjnRbDdjCavixKTHo2o5Pa5SsSEOP+Bo0WbaM25SOXYWmKLOmf3O76E8v67jXBRiaFA7R9QFhhIYcVjVDIFDce34bJaZ3OheV2cyNnHi2mJkh0NyBQK30HDqXUcDukl4eV+FE/a5jcZtQBQFtwHMVG+gaJKRWluAwDRZ2247PZ5NU51MBmK+ftLAg3HEikL7iO+8QCujh6vmvoEOuQzq9CrXHA6gIEzIgDdtmlkk1O+gbuyXwEQXW9xW5MZ0QtAuWE39v6BpYNSVAR7Q5q4M6lGMA25byI4EQUZ/S1aj9iiIIATgWvmLTgs4wvmRZWK1JVGHC4nyk+Cb6BrhRytBGnqfrc1wupVJMpnpg/qW/xL9Tyhzc640+GxZEgfhi5AYsI5TaBp0jfQpZATLird5r/mp1F/9DwAKfcrcLZ3uq31CvwZmgALMuVc2JG5nptVVURJSorNGcRXffam1SIT9hg5+HErxUEmRnf+uvOk8DCMuQFESEpKB9MxH4rEbjR5BUoeQauVN/dSoKyRIyfrqLYXMJxlpz7rMroAiWff5LRc1aFuf+0VBiAs9moT42OpeXSDCGnukdpxkH66HHWt95hXIMz8ACaSNYwUTqGP7qB5JBLh0hoUD97+FuY16M/4+19t/xz4A7gCzD+SdtuxAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "Image (1, 28, 28)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.train_ds[5][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "@Time    :2019/12/10 18:04\n",
    "@Author  : 梁家熙\n",
    "@Email:  :11849322@mail.sustech.edu.cn\n",
    "\"\"\"\n",
    "import json\n",
    "from fastai import *\n",
    "from fastai.vision import *\n",
    "from fastai.vision import ImageList, Image, CategoryList\n",
    "from pandas import DataFrame\n",
    "from tqdm import tqdm\n",
    "import random\n",
    "from pprint import pprint\n",
    "import os\n",
    "import collections\n",
    "from typing import List, Dict, Tuple\n",
    "from fastai.vision.gan import basic_critic, AvgFlatten\n",
    "import logging\n",
    "import torch\n",
    "logger = logging.getLogger(__name__)\n",
    "logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')\n",
    "\n",
    "class MyCNN(torch.nn.Module):\n",
    "    def __init__(self, in_size:int, n_channels:int, n_features:int=64, n_extra_layers:int=0, **conv_kwargs):\n",
    "        super(MyCNN, self).__init__()\n",
    "        \"A basic critic for images `n_channels` x `in_size` x `in_size`.\"\n",
    "        layers = [\n",
    "            conv_layer(n_channels, n_features, 3, 2, 1, leaky=0.2, norm_type=None, **conv_kwargs)]  # norm_type=None?\n",
    "        cur_size, cur_ftrs = in_size // 2, n_features\n",
    "        layers.append(nn.Sequential(\n",
    "            *[conv_layer(cur_ftrs, cur_ftrs, 3, 1, leaky=0.2, **conv_kwargs) for _ in range(n_extra_layers)]))\n",
    "        while cur_size > 4:\n",
    "            layers.append(conv_layer(cur_ftrs, cur_ftrs * 2, 4, 2, 1, leaky=0.2, **conv_kwargs))\n",
    "            cur_ftrs *= 2\n",
    "            cur_size //= 2\n",
    "        # layers += [conv2d(cur_ftrs, 1, 3, padding=0)]\n",
    "\n",
    "        layers += [ResizeBatch( -1), torch.nn.Linear(256*3*3, 10) ]\n",
    "        self.layers = torch.nn.ModuleList(layers)\n",
    "\n",
    "    def forward(self, x):\n",
    "        for layer in self.layers:\n",
    "            x = layer(x)\n",
    "        x = x.view(-1, 10)\n",
    "        return x\n",
    "\n",
    "model = MyCNN(28, 1)\n",
    "learn = Learner(data, model, metrics = accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
     ]
    }
   ],
   "source": [
    "learn.lr_find(num_it=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "MyCNN\n",
       "======================================================================\n",
       "Layer (type)         Output Shape         Param #    Trainable \n",
       "======================================================================\n",
       "Conv2d               [64, 14, 14]         640        True      \n",
       "______________________________________________________________________\n",
       "LeakyReLU            [64, 14, 14]         0          False     \n",
       "______________________________________________________________________\n",
       "Sequential           [64, 14, 14]         0          False     \n",
       "______________________________________________________________________\n",
       "Conv2d               [128, 7, 7]          131,072    True      \n",
       "______________________________________________________________________\n",
       "LeakyReLU            [128, 7, 7]          0          False     \n",
       "______________________________________________________________________\n",
       "BatchNorm2d          [128, 7, 7]          256        True      \n",
       "______________________________________________________________________\n",
       "Conv2d               [256, 3, 3]          524,288    True      \n",
       "______________________________________________________________________\n",
       "LeakyReLU            [256, 3, 3]          0          False     \n",
       "______________________________________________________________________\n",
       "BatchNorm2d          [256, 3, 3]          512        True      \n",
       "______________________________________________________________________\n",
       "ResizeBatch          [2304]               0          False     \n",
       "______________________________________________________________________\n",
       "Linear               [10]                 23,050     True      \n",
       "______________________________________________________________________\n",
       "\n",
       "Total params: 679,818\n",
       "Total trainable params: 679,818\n",
       "Total non-trainable params: 0\n",
       "Optimized with 'torch.optim.adam.Adam', betas=(0.9, 0.99)\n",
       "Using true weight decay as discussed in https://www.fast.ai/2018/07/02/adam-weight-decay/ \n",
       "Loss function : FlattenedLoss\n",
       "======================================================================\n",
       "Callbacks functions applied "
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "learn.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0.316720</td>\n",
       "      <td>0.262568</td>\n",
       "      <td>0.932143</td>\n",
       "      <td>00:28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>0.114647</td>\n",
       "      <td>0.118225</td>\n",
       "      <td>0.967262</td>\n",
       "      <td>00:26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>0.067385</td>\n",
       "      <td>0.082067</td>\n",
       "      <td>0.976548</td>\n",
       "      <td>00:29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0.042915</td>\n",
       "      <td>0.067744</td>\n",
       "      <td>0.979762</td>\n",
       "      <td>00:28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.034388</td>\n",
       "      <td>0.065590</td>\n",
       "      <td>0.980833</td>\n",
       "      <td>00:28</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.fit_one_cycle(5, max_lr=1e-4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "learn.save('0.9888')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Learner(data=ImageDataBunch;\n",
       "\n",
       "Train: LabelList (33600 items)\n",
       "x: MyImageList\n",
       "Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28)\n",
       "y: CategoryList\n",
       "1,0,1,4,0\n",
       "Path: .;\n",
       "\n",
       "Valid: LabelList (8400 items)\n",
       "x: MyImageList\n",
       "Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28),Image (1, 28, 28)\n",
       "y: CategoryList\n",
       "3,6,9,5,6\n",
       "Path: .;\n",
       "\n",
       "Test: None, model=MyCNN(\n",
       "  (layers): ModuleList(\n",
       "    (0): Sequential(\n",
       "      (0): Conv2d(1, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))\n",
       "      (1): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "    )\n",
       "    (1): Sequential()\n",
       "    (2): Sequential(\n",
       "      (0): Conv2d(64, 128, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (1): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "      (2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (3): Sequential(\n",
       "      (0): Conv2d(128, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (1): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "      (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (4): ResizeBatch()\n",
       "    (5): Linear(in_features=2304, out_features=10, bias=True)\n",
       "  )\n",
       "), opt_func=functools.partial(<class 'torch.optim.adam.Adam'>, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[<function accuracy at 0x7fc8fcdc72f0>], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('.'), model_dir='models', callback_fns=[functools.partial(<class 'fastai.basic_train.Recorder'>, add_time=True, silent=False)], callbacks=[], layer_groups=[Sequential(\n",
       "  (0): Conv2d(1, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))\n",
       "  (1): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "  (2): Sequential()\n",
       "  (3): Conv2d(64, 128, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "  (4): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "  (5): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (6): Conv2d(128, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "  (7): LeakyReLU(negative_slope=0.2, inplace=True)\n",
       "  (8): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (9): ResizeBatch()\n",
       "  (10): Linear(in_features=2304, out_features=10, bias=True)\n",
       ")], add_time=True, silent=False)"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "learn.load('0.9888')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "interp = ClassificationInterpretation.from_learner(learn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x864 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "interp.plot_top_losses(16)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "datalist = MyImageList.from_test_data('/home/liangjiaxi/TMP_PROJECT/fastaipractice/data/数字图像识别/test.csv')\\\n",
    "    .split_none()\\\n",
    "    .label_from_func(lambda x: x.index)\\\n",
    "    .databunch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x1440 with 25 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "datalist.show_batch()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Category 3,\n",
       " tensor(3),\n",
       " tensor([1.6279e-04, 4.5975e-05, 4.5929e-04, 9.6036e-01, 1.5815e-04, 1.8018e-02,\n",
       "         1.0370e-05, 9.3178e-05, 1.9665e-02, 1.0283e-03]))"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "learn.predict(datalist.train_ds.item)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 28000/28000 [02:21<00:00, 197.66it/s]\n"
     ]
    }
   ],
   "source": [
    "indexs = []\n",
    "ans = []\n",
    "for x, index in tqdm(datalist.train_ds):\n",
    "    p = (learn.predict(x)[1].item())\n",
    "    indexs.append(index)\n",
    "    ans.append(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = pd.DataFrame({'ImageId': indexs, 'Label': ans})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ImageId</th>\n",
       "      <th>Label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  ImageId  Label\n",
       "0       0      2\n",
       "1       1      0\n",
       "2       2      9\n",
       "3       3      9\n",
       "4       4      3"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [],
   "source": [
    "result.to_csv('./result.csv', index = None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "liangjiaxi",
   "language": "python",
   "name": "liangjiaxi"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
